// /*
//  * @Descripttion:
//  * @version:
//  * @Date: 2021-04-20 11:06:21
//  * @LastEditors: huzhushan@126.com
//  * @LastEditTime: 2022-09-27 15:42:35
//  * @Author: huzhushan@126.com
//  * @HomePage: https://huzhushan.gitee.io/vue3-element-admin
//  * @Github: https://github.com/huzhushan/vue3-element-admin
//  * @Donate: https://huzhushan.gitee.io/vue3-element-admin/donate/
//  */
//
// import { defineStore } from 'pinia'
// import { getItem, setItem, removeItem } from '@/utils/storage' //getItem和setItem是封装的操作localStorage的方法
// import { AesEncryption } from '@/utils/encrypt'
// import { toRaw } from 'vue'
// import { useAccount } from './account'
// import { useTags } from './tags'
// import { useMenus } from './menu'
// export const TOKEN = 'VEA-TOKEN'
// const COLLAPSE = 'VEA-COLLAPSE'
//
// export const useApp = defineStore('app', {
//   state: () => ({
//     title: 'Vue3 Element Admin',
//     authorization: getItem(TOKEN),
//     sidebar: {
//       collapse: getItem(COLLAPSE),
//     },
//     device: 'desktop',
//   }),
//   actions: {
//     setCollapse(data) {
//       this.sidebar.collapse = data
//       // 保存到localStorage
//       setItem(COLLAPSE, data)
//     },
//     clearCollapse() {
//       this.sidebar.collapse = ''
//       removeItem(COLLAPSE)
//     },
//     setDevice(device) {
//       this.device = device
//     },
//     setToken(data) {
//       this.authorization = data
//       // 保存到localStorage
//       setItem(TOKEN, data)
//     },
//     initToken(data) {
//       this.clearToken()
//       this.setToken(data)
//     },
//     clearToken() {
//       // 清除token
//       this.authorization = ''
//       removeItem(TOKEN)
//       // 清除用户信息
//       useAccount().clearUserinfo()
//       // 清除标签栏
//       useTags().clearAllTags()
//       // 清空menus
//       useMenus().setMenus([])
//     },
//     setScreenCode(password) {
//       const authorization = toRaw(this.authorization)
//
//       if (!password) {
//         try {
//           delete authorization.screenCode
//         } catch (err) {
//           console.log(err)
//         }
//
//         this.authorization = authorization
//         // 保存到localStorage
//         setItem(TOKEN, authorization)
//
//         return
//       }
//
//       // 对密码加密
//       const screenCode = new AesEncryption().encryptByAES(password)
//
//       const res = {
//         ...authorization,
//         screenCode,
//       }
//       this.authorization = res
//       // 保存到localStorage
//       setItem(TOKEN, res)
//     },
//   },
// })
import { defineStore } from 'pinia'
import { getItem, setItem, removeItem } from '@/utils/storage' //getItem和setItem是封装的操作localStorage的方法
import { useAccount } from './account'    // pinia的account模块
import { useTags } from './tags'        // pinia的标签栏模块
import { useMenus } from './menu'        // pinia的menu模块
export const TOKEN = 'VEA-TOKEN'
const COLLAPSE = 'VEA-COLLAPSE'

export const useApp = defineStore('app', {
  state: () => ({        // 当前pinia模块中所存储的状态数据
    title: 'Vue3 Element Admin',
    authorization: getItem(TOKEN),
    sidebar: {
      collapse: getItem(COLLAPSE),
    },
    device: 'desktop',
  }),
  actions: {  // pinia中定义的方法，用来操作pinia中所存储的数据
    setToken(data) {
      this.authorization = data        // 把后端返回的数据存到useApp模块的authorization变量中
      setItem(TOKEN, data)            // 保存到localStorage
    },
    initToken(data) {    // 初始化token的方法
      this.clearToken()    // 清空token
      this.setToken(data) // 设置token数据
    },
    clearToken() {
      this.authorization = ''    // 将authorization数据设置为空字符串
      removeItem(TOKEN)            // 删除localStorage中的token
      useAccount().clearUserinfo()    // 清除pinia的account模块中存储的用户信息
      useTags().clearAllTags()        // 清除pinia的useTags模块中存储的标签栏数据
      useMenus().setMenus([])        // 清空pinia的menu模块中存储的菜单数据
    },

  },
})